home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / win32 / Imm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-08  |  20.2 KB  |  589 lines

  1. /**********************************************************************/
  2. /*      IMM.H - Input Method Manager definitions                      */
  3. /*                                                                    */
  4. /*      Copyright (c) 1993-1996  Microsoft Corporation                */
  5. /**********************************************************************/
  6.  
  7. #ifndef _IMM_
  8. #define _IMM_        // defined if IMM.H has been included
  9.  
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13.  
  14.  
  15. typedef DWORD     HIMC;
  16. typedef DWORD     HIMCC;
  17.  
  18. typedef HKL FAR  *LPHKL;
  19. typedef UINT FAR *LPUINT;
  20.  
  21.  
  22. typedef struct tagCOMPOSITIONFORM {
  23.     DWORD dwStyle;
  24.     POINT ptCurrentPos;
  25.     RECT  rcArea;
  26. } COMPOSITIONFORM, *PCOMPOSITIONFORM, NEAR *NPCOMPOSITIONFORM, FAR *LPCOMPOSITIONFORM;
  27.  
  28.  
  29. typedef struct tagCANDIDATEFORM {
  30.     DWORD dwIndex;
  31.     DWORD dwStyle;
  32.     POINT ptCurrentPos;
  33.     RECT  rcArea;
  34. } CANDIDATEFORM, *PCANDIDATEFORM, NEAR *NPCANDIDATEFORM, FAR *LPCANDIDATEFORM;
  35.  
  36.  
  37. typedef struct tagCANDIDATELIST {
  38.     DWORD dwSize;
  39.     DWORD dwStyle;
  40.     DWORD dwCount;
  41.     DWORD dwSelection;
  42.     DWORD dwPageStart;
  43.     DWORD dwPageSize;
  44.     DWORD dwOffset[1];
  45. } CANDIDATELIST, *PCANDIDATELIST, NEAR *NPCANDIDATELIST, FAR *LPCANDIDATELIST;
  46.  
  47. typedef struct tagREGISTERWORDA {
  48.     LPSTR   lpReading;
  49.     LPSTR   lpWord;
  50. } REGISTERWORDA, *PREGISTERWORDA, NEAR *NPREGISTERWORDA, FAR *LPREGISTERWORDA;
  51. typedef struct tagREGISTERWORDW {
  52.     LPWSTR  lpReading;
  53.     LPWSTR  lpWord;
  54. } REGISTERWORDW, *PREGISTERWORDW, NEAR *NPREGISTERWORDW, FAR *LPREGISTERWORDW;
  55. #ifdef UNICODE
  56. typedef REGISTERWORDW REGISTERWORD;
  57. typedef PREGISTERWORDW PREGISTERWORD;
  58. typedef NPREGISTERWORDW NPREGISTERWORD;
  59. typedef LPREGISTERWORDW LPREGISTERWORD;
  60. #else
  61. typedef REGISTERWORDA REGISTERWORD;
  62. typedef PREGISTERWORDA PREGISTERWORD;
  63. typedef NPREGISTERWORDA NPREGISTERWORD;
  64. typedef LPREGISTERWORDA LPREGISTERWORD;
  65. #endif // UNICODE
  66.  
  67.  
  68.  
  69. #define STYLE_DESCRIPTION_SIZE  32
  70.  
  71. typedef struct tagSTYLEBUFA {
  72.     DWORD       dwStyle;
  73.     CHAR        szDescription[STYLE_DESCRIPTION_SIZE];
  74. } STYLEBUFA, *PSTYLEBUFA, NEAR *NPSTYLEBUFA, FAR *LPSTYLEBUFA;
  75. typedef struct tagSTYLEBUFW {
  76.     DWORD       dwStyle;
  77.     WCHAR       szDescription[STYLE_DESCRIPTION_SIZE];
  78. } STYLEBUFW, *PSTYLEBUFW, NEAR *NPSTYLEBUFW, FAR *LPSTYLEBUFW;
  79. #ifdef UNICODE
  80. typedef STYLEBUFW STYLEBUF;
  81. typedef PSTYLEBUFW PSTYLEBUF;
  82. typedef NPSTYLEBUFW NPSTYLEBUF;
  83. typedef LPSTYLEBUFW LPSTYLEBUF;
  84. #else
  85. typedef STYLEBUFA STYLEBUF;
  86. typedef PSTYLEBUFA PSTYLEBUF;
  87. typedef NPSTYLEBUFA NPSTYLEBUF;
  88. typedef LPSTYLEBUFA LPSTYLEBUF;
  89. #endif // UNICODE
  90.  
  91.  
  92. // prototype of IMM API
  93.  
  94. HKL  WINAPI ImmInstallIMEA(LPCSTR lpszIMEFileName, LPCSTR lpszLayoutText);
  95. HKL  WINAPI ImmInstallIMEW(LPCWSTR lpszIMEFileName, LPCWSTR lpszLayoutText);
  96. #ifdef UNICODE
  97. #define ImmInstallIME  ImmInstallIMEW
  98. #else
  99. #define ImmInstallIME  ImmInstallIMEA
  100. #endif // !UNICODE
  101.  
  102. HWND WINAPI ImmGetDefaultIMEWnd(HWND);
  103.  
  104. UINT WINAPI ImmGetDescriptionA(HKL, LPSTR, UINT uBufLen);
  105. UINT WINAPI ImmGetDescriptionW(HKL, LPWSTR, UINT uBufLen);
  106. #ifdef UNICODE
  107. #define ImmGetDescription  ImmGetDescriptionW
  108. #else
  109. #define ImmGetDescription  ImmGetDescriptionA
  110. #endif // !UNICODE
  111.  
  112. UINT WINAPI ImmGetIMEFileNameA(HKL, LPSTR, UINT uBufLen);
  113. UINT WINAPI ImmGetIMEFileNameW(HKL, LPWSTR, UINT uBufLen);
  114. #ifdef UNICODE
  115. #define ImmGetIMEFileName  ImmGetIMEFileNameW
  116. #else
  117. #define ImmGetIMEFileName  ImmGetIMEFileNameA
  118. #endif // !UNICODE
  119.  
  120. DWORD WINAPI ImmGetProperty(HKL, DWORD);
  121.  
  122.  
  123. BOOL WINAPI ImmIsIME(HKL);
  124.  
  125. BOOL WINAPI ImmSimulateHotKey(HWND, DWORD);
  126.  
  127. HIMC WINAPI ImmCreateContext(void);
  128. BOOL WINAPI ImmDestroyContext(HIMC);
  129. HIMC WINAPI ImmGetContext(HWND);
  130. BOOL WINAPI ImmReleaseContext(HWND, HIMC);
  131. HIMC WINAPI ImmAssociateContext(HWND, HIMC);
  132.  
  133. LONG  WINAPI ImmGetCompositionStringA(HIMC, DWORD, LPVOID, DWORD);
  134. LONG  WINAPI ImmGetCompositionStringW(HIMC, DWORD, LPVOID, DWORD);
  135. #ifdef UNICODE
  136. #define ImmGetCompositionString  ImmGetCompositionStringW
  137. #else
  138. #define ImmGetCompositionString  ImmGetCompositionStringA
  139. #endif // !UNICODE
  140.  
  141. BOOL  WINAPI ImmSetCompositionStringA(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
  142. BOOL  WINAPI ImmSetCompositionStringW(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
  143. #ifdef UNICODE
  144. #define ImmSetCompositionString  ImmSetCompositionStringW
  145. #else
  146. #define ImmSetCompositionString  ImmSetCompositionStringA
  147. #endif // !UNICODE
  148.  
  149. DWORD WINAPI ImmGetCandidateListCountA(HIMC, LPDWORD lpdwListCount);
  150. DWORD WINAPI ImmGetCandidateListCountW(HIMC, LPDWORD lpdwListCount);
  151. #ifdef UNICODE
  152. #define ImmGetCandidateListCount  ImmGetCandidateListCountW
  153. #else
  154. #define ImmGetCandidateListCount  ImmGetCandidateListCountA
  155. #endif // !UNICODE
  156.  
  157. DWORD WINAPI ImmGetCandidateListA(HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen);
  158. DWORD WINAPI ImmGetCandidateListW(HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen);
  159. #ifdef UNICODE
  160. #define ImmGetCandidateList  ImmGetCandidateListW
  161. #else
  162. #define ImmGetCandidateList  ImmGetCandidateListA
  163. #endif // !UNICODE
  164.  
  165. DWORD WINAPI ImmGetGuideLineA(HIMC, DWORD dwIndex, LPSTR, DWORD dwBufLen);
  166. DWORD WINAPI ImmGetGuideLineW(HIMC, DWORD dwIndex, LPWSTR, DWORD dwBufLen);
  167. #ifdef UNICODE
  168. #define ImmGetGuideLine  ImmGetGuideLineW
  169. #else
  170. #define ImmGetGuideLine  ImmGetGuideLineA
  171. #endif // !UNICODE
  172.  
  173. BOOL WINAPI ImmGetConversionStatus(HIMC, LPDWORD, LPDWORD);
  174. BOOL WINAPI ImmSetConversionStatus(HIMC, DWORD, DWORD);
  175. BOOL WINAPI ImmGetOpenStatus(HIMC);
  176. BOOL WINAPI ImmSetOpenStatus(HIMC, BOOL);
  177.  
  178. #ifdef _WINGDI_
  179. #ifndef NOGDI
  180. BOOL WINAPI ImmGetCompositionFontA(HIMC, LPLOGFONTA);
  181. BOOL WINAPI ImmGetCompositionFontW(HIMC, LPLOGFONTW);
  182. #ifdef UNICODE
  183. #define ImmGetCompositionFont  ImmGetCompositionFontW
  184. #else
  185. #define ImmGetCompositionFont  ImmGetCompositionFontA
  186. #endif // !UNICODE
  187.  
  188. BOOL WINAPI ImmSetCompositionFontA(HIMC, LPLOGFONTA);
  189. BOOL WINAPI ImmSetCompositionFontW(HIMC, LPLOGFONTW);
  190. #ifdef UNICODE
  191. #define ImmSetCompositionFont  ImmSetCompositionFontW
  192. #else
  193. #define ImmSetCompositionFont  ImmSetCompositionFontA
  194. #endif // !UNICODE
  195. #endif  // ifndef NOGDI
  196. #endif  // ifdef _WINGDI_
  197.  
  198. BOOL    WINAPI ImmConfigureIMEA(HKL, HWND, DWORD, LPVOID);
  199. BOOL    WINAPI ImmConfigureIMEW(HKL, HWND, DWORD, LPVOID);
  200. #ifdef UNICODE
  201. #define ImmConfigureIME  ImmConfigureIMEW
  202. #else
  203. #define ImmConfigureIME  ImmConfigureIMEA
  204. #endif // !UNICODE
  205.  
  206. LRESULT WINAPI ImmEscapeA(HKL, HIMC, UINT, LPVOID);
  207. LRESULT WINAPI ImmEscapeW(HKL, HIMC, UINT, LPVOID);
  208. #ifdef UNICODE
  209. #define ImmEscape  ImmEscapeW
  210. #else
  211. #define ImmEscape  ImmEscapeA
  212. #endif // !UNICODE
  213.  
  214. DWORD   WINAPI ImmGetConversionListA(HKL, HIMC, LPCSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
  215. DWORD   WINAPI ImmGetConversionListW(HKL, HIMC, LPCWSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
  216. #ifdef UNICODE
  217. #define ImmGetConversionList  ImmGetConversionListW
  218. #else
  219. #define ImmGetConversionList  ImmGetConversionListA
  220. #endif // !UNICODE
  221.  
  222. BOOL    WINAPI ImmNotifyIME(HIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue);
  223.  
  224.  
  225. BOOL WINAPI ImmGetStatusWindowPos(HIMC, LPPOINT);
  226. BOOL WINAPI ImmSetStatusWindowPos(HIMC, LPPOINT);
  227. BOOL WINAPI ImmGetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
  228. BOOL WINAPI ImmSetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
  229. BOOL WINAPI ImmGetCandidateWindow(HIMC, DWORD, LPCANDIDATEFORM);
  230. BOOL WINAPI ImmSetCandidateWindow(HIMC, LPCANDIDATEFORM);
  231.  
  232. BOOL WINAPI ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM);
  233. BOOL WINAPI ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM);
  234. #ifdef UNICODE
  235. #define ImmIsUIMessage  ImmIsUIMessageW
  236. #else
  237. #define ImmIsUIMessage  ImmIsUIMessageA
  238. #endif // !UNICODE
  239.  
  240. UINT WINAPI ImmGetVirtualKey(HWND);
  241.  
  242. typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
  243. typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);
  244. #ifdef UNICODE
  245. #define REGISTERWORDENUMPROC  REGISTERWORDENUMPROCW
  246. #else
  247. #define REGISTERWORDENUMPROC  REGISTERWORDENUMPROCA
  248. #endif // !UNICODE
  249.  
  250. BOOL WINAPI ImmRegisterWordA(HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister);
  251. BOOL WINAPI ImmRegisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister);
  252. #ifdef UNICODE
  253. #define ImmRegisterWord  ImmRegisterWordW
  254. #else
  255. #define ImmRegisterWord  ImmRegisterWordA
  256. #endif // !UNICODE
  257.  
  258. BOOL WINAPI ImmUnregisterWordA(HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszUnregister);
  259. BOOL WINAPI ImmUnregisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszUnregister);
  260. #ifdef UNICODE
  261. #define ImmUnregisterWord  ImmUnregisterWordW
  262. #else
  263. #define ImmUnregisterWord  ImmUnregisterWordA
  264. #endif // !UNICODE
  265.  
  266. UINT WINAPI ImmGetRegisterWordStyleA(HKL, UINT nItem, LPSTYLEBUFA);
  267. UINT WINAPI ImmGetRegisterWordStyleW(HKL, UINT nItem, LPSTYLEBUFW);
  268. #ifdef UNICODE
  269. #define ImmGetRegisterWordStyle  ImmGetRegisterWordStyleW
  270. #else
  271. #define ImmGetRegisterWordStyle  ImmGetRegisterWordStyleA
  272. #endif // !UNICODE
  273.  
  274. UINT WINAPI ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister, LPVOID);
  275. UINT WINAPI ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister, LPVOID);
  276. #ifdef UNICODE
  277. #define ImmEnumRegisterWord  ImmEnumRegisterWordW
  278. #else
  279. #define ImmEnumRegisterWord  ImmEnumRegisterWordA
  280. #endif // !UNICODE
  281.  
  282.  
  283. // wParam for WM_IME_CONTROL
  284. #define IMC_GETCANDIDATEPOS             0x0007
  285. #define IMC_SETCANDIDATEPOS             0x0008
  286. #define IMC_GETCOMPOSITIONFONT          0x0009
  287. #define IMC_SETCOMPOSITIONFONT          0x000A
  288. #define IMC_GETCOMPOSITIONWINDOW        0x000B
  289. #define IMC_SETCOMPOSITIONWINDOW        0x000C
  290. #define IMC_GETSTATUSWINDOWPOS          0x000F
  291. #define IMC_SETSTATUSWINDOWPOS          0x0010
  292. #define IMC_CLOSESTATUSWINDOW           0x0021
  293. #define IMC_OPENSTATUSWINDOW            0x0022
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301. // wParam for WM_IME_CONTROL to the soft keyboard
  302. // dwAction for ImmNotifyIME
  303. #define NI_OPENCANDIDATE                0x0010
  304. #define NI_CLOSECANDIDATE               0x0011
  305. #define NI_SELECTCANDIDATESTR           0x0012
  306. #define NI_CHANGECANDIDATELIST          0x0013
  307. #define NI_FINALIZECONVERSIONRESULT     0x0014
  308. #define NI_COMPOSITIONSTR               0x0015
  309. #define NI_SETCANDIDATE_PAGESTART       0x0016
  310. #define NI_SETCANDIDATE_PAGESIZE        0x0017
  311.  
  312.  
  313. // lParam for WM_IME_SETCONTEXT
  314. #define ISC_SHOWUICANDIDATEWINDOW       0x00000001
  315. #define ISC_SHOWUICOMPOSITIONWINDOW     0x80000000
  316. #define ISC_SHOWUIGUIDELINE             0x40000000
  317. #define ISC_SHOWUIALLCANDIDATEWINDOW    0x0000000F
  318. #define ISC_SHOWUIALL                   0xC000000F
  319.  
  320.  
  321. // dwIndex for ImmNotifyIME/NI_COMPOSITIONSTR
  322. #define CPS_COMPLETE                    0x0001
  323. #define CPS_CONVERT                     0x0002
  324. #define CPS_REVERT                      0x0003
  325. #define CPS_CANCEL                      0x0004
  326.  
  327.  
  328. // the modifiers of hot key
  329. #define MOD_ALT                         0x0001
  330. #define MOD_CONTROL                     0x0002
  331. #define MOD_SHIFT                       0x0004
  332.  
  333.  
  334. #define MOD_LEFT                        0x8000
  335. #define MOD_RIGHT                       0x4000
  336.  
  337. #define MOD_ON_KEYUP                    0x0800
  338. #define MOD_IGNORE_ALL_MODIFIER         0x0400
  339.  
  340.  
  341. // Windows for Simplified Chinese Edition hot key ID from 0x10 - 0x2F
  342. #define IME_CHOTKEY_IME_NONIME_TOGGLE           0x10
  343. #define IME_CHOTKEY_SHAPE_TOGGLE                0x11
  344. #define IME_CHOTKEY_SYMBOL_TOGGLE               0x12
  345.  
  346. // Windows for Japanese Edition hot key ID from 0x30 - 0x4F
  347. #define IME_JHOTKEY_CLOSE_OPEN                  0x30
  348.  
  349. // Windows for Korean Edition hot key ID from 0x50 - 0x6F
  350. #define IME_KHOTKEY_SHAPE_TOGGLE                0x50
  351. #define IME_KHOTKEY_HANJACONVERT                0x51
  352. #define IME_KHOTKEY_ENGLISH                     0x52
  353.  
  354. // Windows for Tranditional Chinese Edition hot key ID from 0x70 - 0x8F
  355. #define IME_THOTKEY_IME_NONIME_TOGGLE           0x70
  356. #define IME_THOTKEY_SHAPE_TOGGLE                0x71
  357. #define IME_THOTKEY_SYMBOL_TOGGLE               0x72
  358.  
  359. // direct switch hot key ID from 0x100 - 0x11F
  360. #define IME_HOTKEY_DSWITCH_FIRST                0x100
  361. #define IME_HOTKEY_DSWITCH_LAST                 0x11F
  362.  
  363. // IME private hot key from 0x200 - 0x21F
  364. #define IME_ITHOTKEY_RESEND_RESULTSTR           0x200
  365. #define IME_ITHOTKEY_PREVIOUS_COMPOSITION       0x201
  366. #define IME_ITHOTKEY_UISTYLE_TOGGLE             0x202
  367.  
  368.  
  369.  
  370. // parameter of ImmGetCompositionString
  371. #define GCS_COMPREADSTR                 0x0001
  372. #define GCS_COMPREADATTR                0x0002
  373. #define GCS_COMPREADCLAUSE              0x0004
  374. #define GCS_COMPSTR                     0x0008
  375. #define GCS_COMPATTR                    0x0010
  376. #define GCS_COMPCLAUSE                  0x0020
  377. #define GCS_CURSORPOS                   0x0080
  378. #define GCS_DELTASTART                  0x0100
  379. #define GCS_RESULTREADSTR               0x0200
  380. #define GCS_RESULTREADCLAUSE            0x0400
  381. #define GCS_RESULTSTR                   0x0800
  382. #define GCS_RESULTCLAUSE                0x1000
  383.  
  384. // style bit flags for WM_IME_COMPOSITION
  385. #define CS_INSERTCHAR                   0x2000
  386. #define CS_NOMOVECARET                  0x4000
  387.  
  388.  
  389.  
  390. // bits of fdwInit of INPUTCONTEXT
  391. // IME version constants
  392. #define IMEVER_0310                     0x0003000A
  393. #define IMEVER_0400                     0x00040000
  394.  
  395.  
  396. // IME property bits
  397. #define IME_PROP_AT_CARET               0x00010000
  398. #define IME_PROP_SPECIAL_UI             0x00020000
  399. #define IME_PROP_CANDLIST_START_FROM_1  0x00040000
  400. #define IME_PROP_UNICODE                0x00080000
  401.  
  402.  
  403. // IME UICapability bits
  404. #define UI_CAP_2700                     0x00000001
  405. #define UI_CAP_ROT90                    0x00000002
  406. #define UI_CAP_ROTANY                   0x00000004
  407.  
  408.  
  409. // ImmSetCompositionString Capability bits
  410. #define SCS_CAP_COMPSTR                 0x00000001
  411. #define SCS_CAP_MAKEREAD                0x00000002
  412.  
  413.  
  414. // IME WM_IME_SELECT inheritance Capability bits
  415. #define SELECT_CAP_CONVERSION           0x00000001
  416. #define SELECT_CAP_SENTENCE             0x00000002
  417.  
  418.  
  419. // ID for deIndex of ImmGetGuideLine
  420. #define GGL_LEVEL                       0x00000001
  421. #define GGL_INDEX                       0x00000002
  422. #define GGL_STRING                      0x00000003
  423. #define GGL_PRIVATE                     0x00000004
  424.  
  425.  
  426. // ID for dwLevel of GUIDELINE Structure
  427. #define GL_LEVEL_NOGUIDELINE            0x00000000
  428. #define GL_LEVEL_FATAL                  0x00000001
  429. #define GL_LEVEL_ERROR                  0x00000002
  430. #define GL_LEVEL_WARNING                0x00000003
  431. #define GL_LEVEL_INFORMATION            0x00000004
  432.  
  433.  
  434. // ID for dwIndex of GUIDELINE Structure
  435. #define GL_ID_UNKNOWN                   0x00000000
  436. #define GL_ID_NOMODULE                  0x00000001
  437. #define GL_ID_NODICTIONARY              0x00000010
  438. #define GL_ID_CANNOTSAVE                0x00000011
  439. #define GL_ID_NOCONVERT                 0x00000020
  440. #define GL_ID_TYPINGERROR               0x00000021
  441. #define GL_ID_TOOMANYSTROKE             0x00000022
  442. #define GL_ID_READINGCONFLICT           0x00000023
  443. #define GL_ID_INPUTREADING              0x00000024
  444. #define GL_ID_INPUTRADICAL              0x00000025
  445. #define GL_ID_INPUTCODE                 0x00000026
  446. #define GL_ID_INPUTSYMBOL               0x00000027
  447. #define GL_ID_CHOOSECANDIDATE           0x00000028
  448. #define GL_ID_REVERSECONVERSION         0x00000029
  449. #define GL_ID_PRIVATE_FIRST             0x00008000
  450. #define GL_ID_PRIVATE_LAST              0x0000FFFF
  451.  
  452.  
  453. // ID for dwIndex of ImmGetProperty
  454. #define IGP_GETIMEVERSION               (DWORD)(-4)
  455. #define IGP_PROPERTY                    0x00000004
  456. #define IGP_CONVERSION                  0x00000008
  457. #define IGP_SENTENCE                    0x0000000c
  458. #define IGP_UI                          0x00000010
  459. #define IGP_SETCOMPSTR                  0x00000014
  460. #define IGP_SELECT                      0x00000018
  461.  
  462.  
  463. // dwIndex for ImmSetCompositionString API
  464. #define SCS_SETSTR                      (GCS_COMPREADSTR|GCS_COMPSTR)
  465. #define SCS_CHANGEATTR                  (GCS_COMPREADATTR|GCS_COMPATTR)
  466. #define SCS_CHANGECLAUSE                (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
  467.  
  468.  
  469. // attribute for COMPOSITIONSTRING Structure
  470. #define ATTR_INPUT                      0x00
  471. #define ATTR_TARGET_CONVERTED           0x01
  472. #define ATTR_CONVERTED                  0x02
  473. #define ATTR_TARGET_NOTCONVERTED        0x03
  474. #define ATTR_INPUT_ERROR                0x04
  475.  
  476.  
  477. // bit field for IMC_SETCOMPOSITIONWINDOW, IMC_SETCANDIDATEWINDOW
  478. #define CFS_DEFAULT                     0x0000
  479. #define CFS_RECT                        0x0001
  480. #define CFS_POINT                       0x0002
  481. #define CFS_FORCE_POSITION              0x0020
  482. #define CFS_CANDIDATEPOS                0x0040
  483. #define CFS_EXCLUDE                     0x0080
  484.  
  485.  
  486. // conversion direction for ImmGetConversionList
  487. #define GCL_CONVERSION                  0x0001
  488. #define GCL_REVERSECONVERSION           0x0002
  489. #define GCL_REVERSE_LENGTH              0x0003
  490.  
  491.  
  492. // bit field for conversion mode
  493. #define IME_CMODE_ALPHANUMERIC          0x0000
  494. #define IME_CMODE_NATIVE                0x0001
  495. #define IME_CMODE_CHINESE               IME_CMODE_NATIVE
  496. #define IME_CMODE_HANGEUL               IME_CMODE_NATIVE
  497. #define IME_CMODE_JAPANESE              IME_CMODE_NATIVE
  498. #define IME_CMODE_KATAKANA              0x0002  // only effect under IME_CMODE_NATIVE
  499. #define IME_CMODE_LANGUAGE              0x0003
  500. #define IME_CMODE_FULLSHAPE             0x0008
  501. #define IME_CMODE_ROMAN                 0x0010
  502. #define IME_CMODE_CHARCODE              0x0020
  503. #define IME_CMODE_HANJACONVERT          0x0040
  504. #define IME_CMODE_SOFTKBD               0x0080
  505. #define IME_CMODE_NOCONVERSION          0x0100
  506. #define IME_CMODE_EUDC                  0x0200
  507. #define IME_CMODE_SYMBOL                0x0400
  508.  
  509.  
  510. #define IME_SMODE_NONE                  0x0000
  511. #define IME_SMODE_PLAURALCLAUSE         0x0001
  512. #define IME_SMODE_SINGLECONVERT         0x0002
  513. #define IME_SMODE_AUTOMATIC             0x0004
  514. #define IME_SMODE_PHRASEPREDICT         0x0008
  515.  
  516.  
  517. // style of candidate
  518. #define IME_CAND_UNKNOWN                0x0000
  519. #define IME_CAND_READ                   0x0001
  520. #define IME_CAND_CODE                   0x0002
  521. #define IME_CAND_MEANING                0x0003
  522. #define IME_CAND_RADICAL                0x0004
  523. #define IME_CAND_STROKE                 0x0005
  524.  
  525.  
  526. // wParam of report message WM_IME_NOTIFY
  527. #define IMN_CLOSESTATUSWINDOW           0x0001
  528. #define IMN_OPENSTATUSWINDOW            0x0002
  529. #define IMN_CHANGECANDIDATE             0x0003
  530. #define IMN_CLOSECANDIDATE              0x0004
  531. #define IMN_OPENCANDIDATE               0x0005
  532. #define IMN_SETCONVERSIONMODE           0x0006
  533. #define IMN_SETSENTENCEMODE             0x0007
  534. #define IMN_SETOPENSTATUS               0x0008
  535. #define IMN_SETCANDIDATEPOS             0x0009
  536. #define IMN_SETCOMPOSITIONFONT          0x000A
  537. #define IMN_SETCOMPOSITIONWINDOW        0x000B
  538. #define IMN_SETSTATUSWINDOWPOS          0x000C
  539. #define IMN_GUIDELINE                   0x000D
  540. #define IMN_PRIVATE                     0x000E
  541.  
  542.  
  543. // error code of ImmGetCompositionString
  544. #define IMM_ERROR_NODATA                (-1)
  545. #define IMM_ERROR_GENERAL               (-2)
  546.  
  547.  
  548. // dialog mode of ImmConfigureIME
  549. #define IME_CONFIG_GENERAL              1
  550. #define IME_CONFIG_REGISTERWORD         2
  551. #define IME_CONFIG_SELECTDICTIONARY     3
  552.  
  553.  
  554. // dialog mode of ImmEscape
  555. #define IME_ESC_QUERY_SUPPORT           0x0003
  556. #define IME_ESC_RESERVED_FIRST          0x0004
  557. #define IME_ESC_RESERVED_LAST           0x07FF
  558. #define IME_ESC_PRIVATE_FIRST           0x0800
  559. #define IME_ESC_PRIVATE_LAST            0x0FFF
  560. #define IME_ESC_SEQUENCE_TO_INTERNAL    0x1001
  561. #define IME_ESC_GET_EUDC_DICTIONARY     0x1003
  562. #define IME_ESC_SET_EUDC_DICTIONARY     0x1004
  563. #define IME_ESC_MAX_KEY                 0x1005
  564. #define IME_ESC_IME_NAME                0x1006
  565. #define IME_ESC_SYNC_HOTKEY             0x1007
  566. #define IME_ESC_HANJA_MODE              0x1008
  567. #define IME_ESC_AUTOMATA                0x1009
  568.  
  569.  
  570. // style of word registration
  571. #define IME_REGWORD_STYLE_EUDC          0x00000001
  572. #define IME_REGWORD_STYLE_USER_FIRST    0x80000000
  573. #define IME_REGWORD_STYLE_USER_LAST     0xFFFFFFFF
  574.  
  575.  
  576. // type of soft keyboard
  577. // for Windows Tranditional Chinese Edition
  578. #define SOFTKEYBOARD_TYPE_T1            0x0001
  579. // for Windows Simplified Chinese Edition
  580. #define SOFTKEYBOARD_TYPE_C1            0x0002
  581.  
  582.  
  583. #ifdef __cplusplus
  584. }
  585. #endif
  586.  
  587.  
  588. #endif  // _IMM_
  589.